package com.bitoon.basketdudes.web;

import com.bitoon.basketdudes.web.jpa.Usuario;
import com.bitoon.basketdudes.web.datos.InfoCabeceraXHR;

import java.util.*;
import javax.persistence.*;
import org.apache.log4j.Logger;

public class ListaManagers extends BaseAction {

    private String letras;
    private List<Usuario> datos;
    private InfoCabeceraXHR cabecera;
    private int pagina = 1;
    private int cuantos;

    private Logger log = Logger.getLogger(ListaManagers.class);

    public String execute() {
        String letraDesde = "a";
        String letraHasta = "c";

        if (letras != null) {
            if (letras.length() >= 3) {
                letraDesde = letras.substring(0,1);
                letraHasta = letras.substring(2,3);
            }
        }

        setDatos(buscaUsuarios(letraDesde, letraHasta));

        return SUCCESS;
    }

    public String getLetras() {
        return letras;
    }

    public void setLetras(String letras) {
        this.letras = letras;
    }

    public List<Usuario> getDatos() {
        return datos;
    }

    public void setDatos(List<Usuario> resultadoBusqueda) {
        this.datos = resultadoBusqueda;
    }

    private List<Usuario> buscaUsuarios() {
        return buscaUsuarios("a","c");
    }

    private List<Usuario> buscaUsuarios(String letraDesde, String letraHasta) {
        List<Usuario> retorno = null;
        EntityManager em = null;
        int ELEMENTOS_POR_PAGINA = 3;

        try {
            retorno = new ArrayList<Usuario>();

            em = emfBasket.createEntityManager(); // checked

            Query q = em.createNamedQuery("Usuario.findByFirstLetters");
            q.setParameter("letraDesde", letraDesde);
            q.setParameter("letraHasta", letraHasta);
            q.setFirstResult((pagina-1)*ELEMENTOS_POR_PAGINA);
            //q.setFirstResult(0);
            q.setMaxResults(ELEMENTOS_POR_PAGINA);

            retorno = (List<Usuario>)q.getResultList();
        } catch (Exception e) {
            log.error("[buscaUsuarios]: Error: " + e);
        } finally {
            try { em.close(); } catch (Exception e) { }
        }

        return retorno;
    }

    public int getPagina() {
        return pagina;
    }

    public void setPagina(int pagina) {
        this.pagina = pagina;
    }

    public int getCuantos() {
        return cuantos;
    }

    public void setCuantos(int cuantos) {
        this.cuantos = cuantos;
    }

}
